# @property
# 一个装饰器,用于将某些方法直接设置为属性

class Student(object):
    def __init__(self, score=0):
        self._score = score
    @property  # @property 装饰器就可以把一个方法变成属性调用
    def score(self):
        return self._score

    @score.setter  # @property 本身创建的另一个装饰器, 负责赋值; 若不再继续定义此处,那么我们就得到的是只读属性
    def score(self, value):
        if not isinstance(value, int):
            raise ValueError('score must be an integer!')
        if value < 0 or value > 100:
            raise ValueError('score must between 0 ~ 100!')
        self._score = value


s = Student()
s.score = 60
print(s.score)
